package com.kamistoat.netty.netty.http;

import io.netty.channel.Channel;
import io.netty.channel.ChannelInitializer;
import io.netty.channel.ChannelPipeline;
import io.netty.handler.codec.http.HttpServerCodec;

import java.nio.channels.SocketChannel;

/**
 * 之前在 BootStrap.childHandler 都是匿名去写 ChannelInitializer
 * 也可以抽象出来单独写一个实现类
 */
public class HttpServerInitializer extends ChannelInitializer<io.netty.channel.socket.SocketChannel> {
    @Override
    protected void initChannel(io.netty.channel.socket.SocketChannel socketChannel) throws Exception {
        // 得到管道
        ChannelPipeline pipeline = socketChannel.pipeline();

        // 由于是处理Http请求，需要添加一个Http编解码器。可以直接通过Netty库类--HttpServerCodec实现
        // HttpServerCodec 底层使用 LineParser 和 HeadParser 实现
        // 在向pipeline中添加Handler时是可以指定handler的别名的。
        pipeline.addLast("MyHttpServerCodec", new HttpServerCodec());
        pipeline.addLast("MyHttpServerHandler",new HttpServerHandler());
    }
}
